#include <iostream>
#include <queue>
#include <cstring>
using  namespace std;
const int N=1010;
long long b[N][N];
long long v[N][N];
int n,m;
int dx[2]={0,-1};
int dy[2]={-1,0};
long long st[N][N];
int d[N][N];
int d1[N][N];
void bfs()
{
    queue<pair<int,int>> q;
    q.push({n,m});
    v[n][m]=b[n][m];
    while(q.size())
    {
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
        if(d[x][y]==2)
        {
            d[x][y]-=1;
            continue;
        }
        for(int i=0;i<2;i++)
        {
            int xx=dx[i]+x;
            int yy=dy[i]+y;
            if(xx<1 || xx>n) continue;
            if(yy<1 || yy>m) continue;
            if(v[x][y]+b[xx][yy]<v[xx][yy]) continue;
            v[xx][yy]=v[x][y]+b[xx][yy];
            d[xx][yy]+=1;
            q.push({xx,yy});
        }
    }
}
void bfs1()
{
    queue<pair<int,int>> q;
    q.push({1,1});
    st[1][1]=b[1][1];
    while(q.size())
    {
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
         if(d1[x][y]==2)
        {
            d1[x][y]-=1;
            continue;
        }
        for(int i=0;i<2;i++)
        {
            int xx=-dx[i]+x;
            int yy=-dy[i]+y;
            if(xx<1 || xx>n) continue;
            if(yy<1 || yy>m) continue;
            if(st[x][y]+b[xx][yy]<st[xx][yy]) continue;
            st[xx][yy]=st[x][y]+b[xx][yy];
            q.push({xx,yy});
            d1[xx][yy]+=1;
        }
    }
}
int main()
{
    
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            st[i][j]=v[i][j]=-10000000000000;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%lld",&b[i][j]);
        }
    }
    bfs();
    bfs1();
    int t;
    cin>>t;
    int x[10]={0};
    int y[10]={0};
    while(t--)
    {
        long long ans=v[1][1];
        int cnt=0;
        int k;
        cin>>k;
        for(int i=0;i<k;i++)
        {
            cin>>x[i]>>y[i];
        }
        int vis[10]={0};
        for(int i=0;i<k;i++)
        {
            vis[i]=1;
            for(int j=0;j<k;j++)
            {
                if(!vis[j])
                {
                    ans=max(ans,st[x[i]][y[i]]+v[x[j]][y[j]]);
                }
            }
            vis[i]=0;
        }
        cout<<ans<<'\n';
        
    }
    return 0;
}
